﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using ComunesMGI.DataTypes;
using System.IO;
using System.ServiceModel.Web;
using ComunesMGI.Enum;

namespace WebServiceMGI
{
    [ServiceContract]
    public interface IMGIIncidentesWS
    {
       
        [OperationContract]
        List<DataCampo> GetCampos(int idSistema, Lista lista);

        [OperationContract]
        DataAltaIncidente AddIncidente(DataSistema incidente);

        [OperationContract]
        List<DataIncidente> GetIncidentes(int idSistema);

        [OperationContract]
        List<DataIncidente> GetIncidentesAsignablesWP(int wkpCod);

        [OperationContract]
        List<DataTarea> GetTareas(int idSistema, int idIncidente);

        [OperationContract]
        bool AsignarResponsable(int idSistema, int idIncidente, DataTarea tarea, DataUsuario usuario);

        [OperationContract]
        int AddWorkPackage(int idSistema, DataWP workPackage);

        [OperationContract]
        List<DataIncidente> GetIncidentesWP(int idSistema, int idWorkPackage);

        [OperationContract]
        List<DataWP> GetWorkPackages(int sisCod);

        [OperationContract]
        void AsociarIncidentesWP(int idSistema, int idWorkPackage, List<int> incidentes);

        [OperationContract]
        List<DataIncidenteReporte> GetIncidentesCerradosPeriodo(List<int> sistemas, DateTime perFchIni, DateTime perFchFin);

        [OperationContract]
        List<DataIncidenteReporte> GetIncidentesCreadosPeriodo(List<int> sistemas, DateTime perFchIni, DateTime perFchFin);

        [OperationContract]
        string UploadFile(Stream stream);

        [OperationContract]
        bool AdjuntarArchivoIncidente(string nombreArchivo, int idSistema, int idIncidente, string nroTemp);

        [OperationContract]
        DataAltaTarea AddTarea(int idSistema, int idIncidente, List<DataCampo> campos);

        [OperationContract]
        List<DataEstadoWP> GetEstadosWP();

        [OperationContract]
        List<DataIncidenteReporte> VisualizarIncidentesAsignados(List<int> sistema, string usuario, string campoFiltro, DateTime perFchIni, DateTime perFchFin);

        [OperationContract]
        bool ChkWpIncidentesOTareasSinCerrar(int wkpCod);
        
        [OperationContract]
        void ModificarWP(DataWP wp, bool cerrarTodo);
    
    }
}
